﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;

namespace RzCorportativo.Views.Administrativo
{
    [Lib.Permissao(HasValidation = true)]
    public partial class AreaConhecimento : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var lista = Lib.AreaConhecimento.Listar(new Lib.AreaConhecimento()).OrderBy(b => b.Nome).ToList();
            foreach (var item in lista)
            {
                var row = new System.Web.UI.HtmlControls.HtmlTableRow();
                row.Cells.Add(new System.Web.UI.HtmlControls.HtmlTableCell()
                {
                    InnerHtml = new HtmlString("<a href='javascript:Editar({ Nome: \"" + item.Nome + "\", AreaId: " + item.AreaId.ToString() + "});void(0);'>" + item.Nome + "</a>").ToHtmlString()
                });
                row.Cells.Add(new System.Web.UI.HtmlControls.HtmlTableCell()
                {
                    InnerHtml = "<div class='btn-group' data-toggle='buttons-radio'><input type='button' id='btnItens" + item.AreaId.ToString() +
                    "' onclick='GetItensArea(" + item.AreaId.ToString() +
                    ", this)' class='btn btn-primary' value='itens'/>" +
                    "<input type='button' id='btnRemove" + item.AreaId.ToString() +
                    "' onclick='RemoveArea(" + item.AreaId.ToString() +
                    ", this)' class='btn btn-danger' value='remover'/></div>"
                });
                row.Attributes.Add("area", item.AreaId.ToString());
                this.gridArea.Rows.Add(row);
            }
        }

        [WebMethod]
        public static object AddArea(Lib.AreaConhecimento area)
        {
            try
            {
                if (area == null)
                    throw new Exception("O objeto fornecido não pode ser nulo");

                string erros = string.Empty;

                if (!BasePage.IsAuthenticate)
                    erros += "Sua sessão está expirada, favor logar-se novamente";
                if (area.AreaId.Equals(-1))
                    erros += (erros.Length > 0 ? ";" : string.Empty) + "Código da area inválida";
                if (string.IsNullOrEmpty(area.Nome))
                    erros += (erros.Length > 0 ? ";" : string.Empty) + "Area inválido";
                if ((AppSession.Login.Usuario ?? new Lib.Usuario()).UsuarioId == 0)
                    erros += (erros.Length > 0 ? ";" : string.Empty) + "Usuário inválido, favor fazer login novamente";
                if (erros.Length > 0)
                    return new
                    {
                        AlertType = 1,
                        Messages = erros.Split(';'),
                        Show = true,
                        Value = 0
                    };

                if (area.Salvar())
                {
                    return new
                    {
                        AlertType = 0,
                        Messages = new string[] { "Item salvo com sucesso!" },
                        Show = true,
                        Value = area.AreaId
                    };
                }
                else
                {
                    return new
                    {
                        AlertType = 1,
                        Messages = new string[] { "Desculpe isto é vergonhoso", "Não foi possível salvar esta configuração, tente mais tarde!" },
                        Show = true,
                        Value = 0
                    };
                }
            }
            catch (Exception ex)
            {
                return new
                {
                    AlertType = 1,
                    Messages = new string[] { ex.Message },
                    Show = true,
                    Value = 0
                };
            }
        }

        [WebMethod]
        public static object RemoveArea(Lib.AreaConhecimento area)
        {
            try
            {
                if (area == null)
                    throw new Exception("O objeto fornecido não pode ser nulo");

                string erros = string.Empty;

                if (!BasePage.IsAuthenticate)
                    erros += "Sua sessão está expirada, favor logar-se novamente";
                if (area.AreaId.Equals(-1))
                    erros += (erros.Length > 0 ? ";" : string.Empty) + "Código da área inválida";
                if ((AppSession.Login.Usuario ?? new Lib.Usuario()).UsuarioId == 0)
                    erros += (erros.Length > 0 ? ";" : string.Empty) + "Usuário inválido, favor fazer login novamente";
                if (erros.Length > 0)
                    return new
                    {
                        AlertType = 1,
                        Messages = erros.Split(';'),
                        Show = true,
                        Value = 0
                    };

                if (area.Excluir())
                {
                    return new
                    {
                        AlertType = 0,
                        Messages = new string[] { "Item excluido com sucesso!" },
                        Show = true,
                        Value = area.AreaId
                    };
                }
                else
                {
                    return new
                    {
                        AlertType = 1,
                        Messages = new string[] { "Desculpe isto é vergonhoso", "Não foi possível excluir esta configuração, tente mais tarde!" },
                        Show = true,
                        Value = 0
                    };
                }
            }
            catch (Exception ex)
            {
                return new
                {
                    AlertType = 1,
                    Messages = new string[] { ex.Message },
                    Show = true,
                    Value = 0
                };
            }
        }
    }
}